index.html.vue 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782
  1. <template>
  2. <div>
  3. <!-- 页面头部 -->
  4. <HomePageHead></HomePageHead>
  5. <!-- 页面导航 -->
  6. <HomePageNavigation></HomePageNavigation>
  7. <!-- 广告一 -->
  8. <HomeAdvertising :imgurl="adImg1"></HomeAdvertising>
  9. <!-- 二级导航列表 -->
  10. <div class="nav2top"></div>
  11. <div class="nav2">
  12. <ul class="inner">
  13. <li class="home">
  14. {{ title }}
  15. </li>
  16. <li class="titleList" v-for="(item, index) in pageData" :key="index">
  17. <NuxtLink :href="getLinkPath(item)" :title="item.alias">
  18. <span class="nav2_title">{{ item.alias }}</span>
  19. </NuxtLink>
  20. </li>
  21. </ul>
  22. </div>
  23. <div class="nav2btm"></div>
  24. <!-- 第一层 -->
  25. <!-- 第一部分 -->
  26. <div class="part1">
  27. <div class="inner">
  28. <div class="part1_left" v-if="pageData[0]">
  29. <div class="part1_title">
  30. <h2 class="nav_part1_left">
  31. <NuxtLink :href="getLinkPath(pageData[0])" v-if="pageData[0]" :title="pageData[0].alias">
  32. {{ pageData[0].alias }}
  33. </NuxtLink>
  34. <em></em>
  35. </h2>
  36. </div>
  37. <div class="part1_content">
  38. <div class="context_left">
  39. <div class="top" v-for="(item, index) in pageData[0].data" :key="index">
  40. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title">
  41. <img :src="item.imgurl" alt="item.title">
  42. <span class="title1">{{ item.title }}</span>
  43. </NuxtLink>
  44. </div>
  45. <div class="bottom">
  46. <div class="bottom_left" v-for="(item, index) in pageData[0].data1" :key="index">
  47. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title">
  48. <img :src="item.imgurl" alt="item.title">
  49. <span class="title2">{{ item.title }}</span>
  50. </NuxtLink>
  51. </div>
  52. </div>
  53. </div>
  54. <div class="context_right">
  55. <ul class="rightContent">
  56. <li class="context1" v-for="(item, index) in pageData[0].data2" :key="index">
  57. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title">
  58. {{ item.title }}
  59. </NuxtLink>
  60. </li>
  61. </ul>
  62. </div>
  63. </div>
  64. </div>
  65. <div class="part1_right" v-if="pageData[1]">
  66. <div class="part1_right_title">
  67. <h2 class="part1_right_title1_active">
  68. <NuxtLink :href="getLinkPath(pageData[1])" v-if="pageData[1]" :title="pageData[1].alias">
  69. {{ pageData[1].alias }}
  70. </NuxtLink>
  71. <em class="active_bg"></em>
  72. </h2>
  73. </div>
  74. <div class="part1_right_content">
  75. <div class="part1_right_top11">
  76. <div class="part1_right_content_top" v-for="(item, index) in pageData[1].data" :key="index">
  77. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title">
  78. <img :src="item.imgurl" alt="item.title">
  79. <span class="content_top_title2">{{ item.title }}</span>
  80. </NuxtLink>
  81. </div>
  82. </div>
  83. <!-- <div class="part1_right_content_top" v-for="(item, index) in pageData[1].data" :key="index">
  84. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title">
  85. <img :src="item.imgurl" alt="item.title">
  86. <span class="content_top_title2">{{ item.title }}</span>
  87. </NuxtLink>
  88. </div> -->
  89. <ul class="part1_right_content_bottom">
  90. <li class="content_bottom_list" v-for="(item, index) in pageData[1].data1" :key="index">
  91. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title">
  92. {{ item.title }}
  93. </NuxtLink>
  94. </li>
  95. </ul>
  96. </div>
  97. </div>
  98. </div>
  99. </div>
  100. <!-- 第二部分 -->
  101. <div class="part2">
  102. <div class="inner">
  103. <div class="part2_left" v-if="pageData[2]">
  104. <div class="part2_title">
  105. <h2 class="nav_part2_left">
  106. <NuxtLink :href="getLinkPath(pageData[2])" v-if="pageData[2]" :title="pageData[2].alias">
  107. {{ pageData[2].alias }}
  108. </NuxtLink>
  109. <em></em>
  110. </h2>
  111. </div>
  112. <div class="part2_content">
  113. <div class="part2_content_left">
  114. <ul class="content_a">
  115. <li class="context111" v-for="(item, index) in pageData[2].data2" :key="index">
  116. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title">
  117. {{ item.title }}
  118. </NuxtLink>
  119. </li>
  120. </ul>
  121. </div>
  122. <div class="part2_content_right">
  123. <div class="right_top" v-for="(item, index) in pageData[2].data" :key="index">
  124. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title">
  125. <img :src="item.imgurl" alt="item.title">
  126. <span class="title11">{{ item.title }}</span>
  127. </NuxtLink>
  128. </div>
  129. <div class="right_bottom">
  130. <div class="bottom_left" v-for="(item, index) in pageData[2].data1" :key="index">
  131. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title">
  132. <img :src="item.imgurl" alt="item.title">
  133. <span class="title22">{{ item.title }}</span>
  134. </NuxtLink>
  135. </div>
  136. </div>
  137. </div>
  138. </div>
  139. </div>
  140. <div class="part2_right" v-if="pageData[3]">
  141. <div class="part2_right_title">
  142. <h2 class="part2_right_title1_active">
  143. <NuxtLink :href="getLinkPath(pageData[3])" v-if="pageData[3]" :title="pageData[3].alias">
  144. {{ pageData[3].alias }}
  145. </NuxtLink>
  146. <em class="active_bg11"></em>
  147. </h2>
  148. </div>
  149. <div class="part2_right_content">
  150. <div class="part2_right_top11">
  151. <div class="part2_right_content_top" v-for="(item, index) in pageData[3].data" :key="index">
  152. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title">
  153. <img :src="item.imgurl" alt="item.title">
  154. <span class="content_top_title22">{{ item.title }}</span>
  155. </NuxtLink>
  156. </div>
  157. </div>
  158. <ul class="part2_right_content_bottom">
  159. <li class="content_bottom_list" v-for="(item, index) in pageData[3].data2" :key="index">
  160. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title">
  161. {{ item.title }}
  162. </NuxtLink>
  163. </li>
  164. </ul>
  165. </div>
  166. </div>
  167. </div>
  168. </div>
  169. <!-- 广告二 -->
  170. <HomeAdvertising :imgurl="adImg2"></HomeAdvertising>
  171. <!-- 第二层 -->
  172. <div class="part3" v-if="pageData[4]">
  173. <div class="inner">
  174. <div class="part3_left">
  175. <div class="part3_left_top" v-if="pageData[4]">
  176. <div class="part3_leftTitle">
  177. <h2 class="part3_left_title">
  178. <NuxtLink :href="getLinkPath(pageData[4])" v-if="pageData[4]"
  179. :title="pageData[4].alias">
  180. {{ pageData[4].alias }}
  181. </NuxtLink>
  182. <em></em>
  183. </h2>
  184. </div>
  185. <div class="part3_left_content" v-if="pageData[4]">
  186. <div class="part3_left_content_top">
  187. <div class="content_top_left">
  188. <div class="part3_photo_text" v-for="(item, index) in pageData[4].data"
  189. :key="index">
  190. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title">
  191. <img :src="item.imgurl" alt="item.title">
  192. <span class="part3_text">{{ item.title }}</span>
  193. </NuxtLink>
  194. <span class="littleTips">精选</span>
  195. </div>
  196. <ul class="part3_content">
  197. <li class="part3_content_list" v-for="(item, index) in pageData[4].data1"
  198. :key="index">
  199. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title">
  200. {{ item.title }}
  201. </NuxtLink>
  202. </li>
  203. </ul>
  204. </div>
  205. <ul class="content_top_right">
  206. <li class="content_right_list" v-for="(item, index) in pageData[4].data2"
  207. :key="index">
  208. <NuxtLink to="#">
  209. <div class="part3_time">
  210. <span class="month">{{ getTime(item.updated_at, 'day', 1) }}</span>
  211. <span class="xiegang">/</span>
  212. <span class="day">{{ getTime(item.updated_at, 'month', 1) }}</span>
  213. </div>
  214. <div class="time_left_content">
  215. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title">
  216. {{ item.title }}
  217. </NuxtLink>
  218. </div>
  219. </NuxtLink>
  220. </li>
  221. </ul>
  222. </div>
  223. </div>
  224. </div>
  225. <div class="part3_left_bottom" v-if="pageData[5] || pageData[6]">
  226. <div class="part3_leftTitle1">
  227. <h2 class="part3_left_title" v-if="pageData[5]" @mouseenter="tabsData = 1"
  228. :class="{ part3_left_title_active: tabsData == 1 }">
  229. <NuxtLink :href="getLinkPath(pageData[5])" @mouseenter="tabsData = 1"
  230. :class="{ active: tabsData == 1 }" :title="pageData[5].alias">
  231. {{ pageData[5].alias }}
  232. </NuxtLink>
  233. <em></em>
  234. </h2>
  235. <h2 class="part3_left_title" v-if="pageData[6]" @mouseenter="tabsData = 2"
  236. :class="{ part3_left_title_active: tabsData == 2 }">
  237. <NuxtLink :href="getLinkPath(pageData[6])" v-if="pageData[6]" @mouseenter="tabsData = 2"
  238. :class="{ active: tabsData == 2 }" :title="pageData[6].alias">
  239. {{ pageData[6].alias }}
  240. </NuxtLink>
  241. <em></em>
  242. </h2>
  243. </div>
  244. <div class="part3_left_content1" v-if="tabsData == 1">
  245. <div class="content_bottom_left">
  246. <div class="content_top" v-for="(item, index) in pageData[5].data" :key="index">
  247. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title">
  248. <img :src="item.imgurl" alt="item.title">
  249. <span class="part3_text">{{ item.title }}</span>
  250. </NuxtLink>
  251. </div>
  252. <div class="content_bottom">
  253. <div class="content_bottom_1" v-for="(item, index) in pageData[5].data1"
  254. :key="index">
  255. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title">
  256. <img :src="item.imgurl" alt="item.title">
  257. <span class="part3_text">{{ item.title }}</span>
  258. </NuxtLink>
  259. </div>
  260. </div>
  261. </div>
  262. <div class="content_bottom_right">
  263. <ul class="bottom_content_1">
  264. <li class="bottom_content_list" v-for="(item, index) in pageData[5].data2"
  265. :key="index">
  266. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title">
  267. {{ item.title }}
  268. </NuxtLink>
  269. </li>
  270. </ul>
  271. </div>
  272. </div>
  273. <div class="part3_left_content1" v-if="tabsData == 2 && pageData[6].alias">
  274. <div class="content_bottom_left">
  275. <div class="content_top" v-for="(item, index) in pageData[6].data" :key="index">
  276. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title">
  277. <img :src="item.imgurl" alt="item.title">
  278. <span class="part3_text">{{ item.title }}</span>
  279. </NuxtLink>
  280. </div>
  281. <div class="content_bottom">
  282. <div class="content_bottom_1" v-for="(item, index) in pageData[6].data1"
  283. :key="index">
  284. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title">
  285. <img :src="item.imgurl" alt="item.title">
  286. <span class="part3_text">{{ item.title }}</span>
  287. </NuxtLink>
  288. </div>
  289. </div>
  290. </div>
  291. <div class="content_bottom_right">
  292. <ul class="bottom_content_1">
  293. <li class="bottom_content_list" v-for="(item, index) in pageData[6].data2"
  294. :key="index">
  295. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title">
  296. {{ item.title }}
  297. </NuxtLink>
  298. </li>
  299. </ul>
  300. </div>
  301. </div>
  302. </div>
  303. </div>
  304. <div class="part3_right" v-if="pageData[7]">
  305. <div class="part3_rightTitle">
  306. <h2 class="part3_right_title">
  307. <NuxtLink :href="getLinkPath(pageData[7])" v-if="pageData[7]" :title="pageData[7].alias">
  308. {{ pageData[7].alias }}
  309. </NuxtLink>
  310. <em></em>
  311. </h2>
  312. <div class="rightMore">
  313. <!-- <NuxtLink to="#">更多》</NuxtLink> -->
  314. </div>
  315. </div>
  316. <ul class="part3_right_content_top" v-if="pageData[7].data1.length > 0">
  317. <li class="part3_right_contentlist_top" v-for="(item, index) in pageData[7].data1" :key="index">
  318. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title">
  319. <span class="numStyle">{{ index + 1 }}</span>
  320. {{ item.title }}
  321. </NuxtLink>
  322. </li>
  323. </ul>
  324. <div class="part3_photo_text_right" v-if="pageData[7].data[0]">
  325. <NuxtLink :href="getLinkPathDetail(pageData[7].data[0])" :title="pageData[7].data[0].title">
  326. <span class="part3_text11">{{ pageData[7].data[0].title }}</span>
  327. <img :src="pageData[7].data[0].imgurl" :alt="pageData[7].data[0].title">
  328. </NuxtLink>
  329. </div>
  330. <ul class="part3_right_content_11" v-if="pageData[7].data2.length > 0">
  331. <li class="part3_right_contentlist_11" v-for="(item, index) in pageData[7].data2" :key="index">
  332. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title">
  333. {{ item.title }}
  334. </NuxtLink>
  335. </li>
  336. </ul>
  337. <div class="part3_photo_text_right" v-if="pageData[7].data[1]">
  338. <NuxtLink :href="getLinkPathDetail(pageData[7].data[1])" :title="pageData[7].data[1].title">
  339. <span class="part3_text11">{{ pageData[7].data[1].title }}</span>
  340. <img :src="pageData[7].data[1].imgurl" :alt="pageData[7].data[1].title">
  341. </NuxtLink>
  342. </div>
  343. <ul class="part3_right_content_11" v-if="pageData[7].data3.length > 0">
  344. <li class="part3_right_contentlist_11" v-for="(item, index) in pageData[7].data3" :key="index">
  345. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title">
  346. {{ item.title }}
  347. </NuxtLink>
  348. </li>
  349. </ul>
  350. <div class="part3_photo_text_right" v-if="pageData[7].data[2]">
  351. <NuxtLink :href="getLinkPathDetail(pageData[7].data[2])" :title="pageData[7].data[2].title">
  352. <span class="part3_text11">{{ pageData[7].data[2].title }}</span>
  353. <img :src="pageData[7].data[2].imgurl" :alt="pageData[7].data[2].title">
  354. </NuxtLink>
  355. </div>
  356. <ul class="part3_right_content_11">
  357. <li class="part3_right_contentlist_11" v-for="(item, index) in pageData[7].data4" :key="index">
  358. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title">
  359. {{ item.title }}
  360. </NuxtLink>
  361. </li>
  362. </ul>
  363. </div>
  364. </div>
  365. </div>
  366. <!-- 页脚部分 -->
  367. <HomeFoot1></HomeFoot1>
  368. </div>
  369. </template>
  370. <script setup>
  371. //0.加载页面依赖 start ---------------------------------------->
  372. import { ref, onMounted } from 'vue';
  373. //0.加载页面依赖 end ---------------------------------------->
  374. //1.获得路由id start ---------------------------------------->
  375. const route = useRoute();
  376. //获得当前的完整路径
  377. const fullPath = route.path;
  378. //拆分,取出来中间这一段,然后提取数字部分
  379. const segments = fullPath.split('/');
  380. const targetSegment = segments[1];
  381. //let routeId = 11 //排除路径错误可以打开这个
  382. //const numberPart = targetSegment.match(/\d+$/)?.[0];
  383. //let routeId = numberPart;
  384. let routeId;
  385. //通过导航路径反向查询导航id
  386. const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
  387. method: 'GET',
  388. query: {
  389. 'pinyin': targetSegment,
  390. },
  391. });
  392. if (getRouteId.code == 200) {
  393. routeId = getRouteId.data.category_id
  394. } else {
  395. console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
  396. console.log("错误位置:通过url路径查询导航池id")
  397. console.log("后端错误反馈:", getRouteId.message)
  398. console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
  399. }
  400. //1.获得路由id end ---------------------------------------->
  401. //2.页面交互效果 start ---------------------------------------->
  402. //2.1
  403. const title = ref("")
  404. const tabsData = ref(1)
  405. async function getPageDataTitle() {
  406. const mkdata = await requestDataPromise('/web/getOneWebsiteCategory', {
  407. method: 'GET',
  408. query: {
  409. 'catid': routeId,
  410. },
  411. });
  412. if (mkdata.code == 200) {
  413. title.value = mkdata.data.alias;
  414. } else {
  415. console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
  416. console.log("错误位置:获取二级标题")
  417. console.log("后端错误反馈:", mkdata.message)
  418. console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
  419. }
  420. }
  421. getPageDataTitle();
  422. //2.1 新闻图片切换
  423. const hoverStatus = ref(0)
  424. const qhPic = function (num) {
  425. console.log(num)
  426. hoverStatus.value = num;
  427. }
  428. //2.2 选项卡切换
  429. let showTabs = ref(1)
  430. let qhtabs = function (number) {
  431. console.log(number)
  432. showTabs.value = number
  433. }
  434. //2.3 展示广告
  435. let adImg1 = ref({})
  436. let adImg2 = ref({})
  437. let adImg3 = ref({})
  438. let adImg4 = ref({})
  439. onMounted(async () => {
  440. //从客户端获取行政职能部门 加快打开速度
  441. const { $webUrl, $CwebUrl } = useNuxtApp();
  442. //广告1
  443. let url = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=xcw_category_0001`
  444. const responseAd1 = await fetch(url, {
  445. headers: {
  446. 'Content-Type': 'application/json',
  447. 'Userurl': $CwebUrl,
  448. 'Origin': $CwebUrl
  449. }
  450. });
  451. const resultAd1 = await responseAd1.json();
  452. adImg1.value = resultAd1.data[0];
  453. //广告2
  454. let url2 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=xcw_category_0002`
  455. const responseAd2 = await fetch(url2, {
  456. headers: {
  457. 'Content-Type': 'application/json',
  458. 'Userurl': $CwebUrl,
  459. 'Origin': $CwebUrl
  460. }
  461. });
  462. const resultAd2 = await responseAd2.json();
  463. adImg2.value = resultAd2.data[0];
  464. //广告3
  465. let url3 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=xcw_category_0003`
  466. const responseAd3 = await fetch(url3, {
  467. headers: {
  468. 'Content-Type': 'application/json',
  469. 'Userurl': $CwebUrl,
  470. 'Origin': $CwebUrl
  471. }
  472. });
  473. const resultAd3 = await responseAd3.json();
  474. adImg3.value = resultAd3.data[0];
  475. //广告4
  476. let url4 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=xcw_category_0004`
  477. const responseAd4 = await fetch(url4, {
  478. headers: {
  479. 'Content-Type': 'application/json',
  480. 'Userurl': $CwebUrl,
  481. 'Origin': $CwebUrl
  482. }
  483. });
  484. const resultAd4 = await responseAd4.json();
  485. adImg4.value = resultAd4.data[0];
  486. })
  487. //2.页面交互效果 end ---------------------------------------->
  488. //3.渲染页面数据 start ---------------------------------------->
  489. //3.1 该页面上所有的导航池 转为动态数据
  490. const pageCategory = ref([]);
  491. //3.2 该页面上需要渲染的所有数据
  492. const pageData = ref([
  493. // { id: 0, data: [], data2: [], title: "", cid: "" },
  494. // { id: 1, data: [], title: "", cid: "" },
  495. // { id: 2, data: [], title: "", cid: "" },
  496. // { id: 3, data: [], title: "", cid: "" },
  497. // { id: 4, data: [], title: "", cid: "" },
  498. // { id: 5, data: [], title: "", cid: "" },
  499. // { id: 6, data: [], title: "", cid: "" },
  500. // { id: 7, data: [], title: "", cid: "" },
  501. // { id: 8, data: [], title: "", cid: "" },
  502. ])
  503. const navSize = ref("");
  504. //3.3 获取所有导航
  505. try {
  506. const navigateData = await requestDataPromise('/web/getWebsiteModelCategory', {
  507. method: 'GET',
  508. query: {
  509. 'placeid': 1,
  510. 'pid': routeId,
  511. 'num': 8
  512. },
  513. });
  514. if (navigateData.code == 200) {
  515. // 遍历可用的导航池放到页面中
  516. for (let index in navigateData.data) {
  517. let data = {
  518. title: navigateData.data[index].name,
  519. cid: navigateData.data[index].category_id,
  520. children_count: navigateData.data[index].children_count,
  521. alias: navigateData.data[index].alias,
  522. aLIas_pinyin: targetSegment + "/" + navigateData.data[index].aLIas_pinyin,
  523. data: [],
  524. data1: [],
  525. data2: [],
  526. data3: [],
  527. data4: [],
  528. category_id1: "",
  529. category_id2: "",
  530. category_id3: "",
  531. category_id4: "",
  532. title1: "",
  533. title2: "",
  534. title3: "",
  535. title4: ""
  536. };
  537. if (navigateData.data[index].is_url == 1) {
  538. // 处理 URL 的逻辑
  539. } else {
  540. //每个页面最多8个模块
  541. pageData.value.push(data);
  542. }
  543. }
  544. //导航池加载完毕,开始申请模块数据
  545. // await getPageData1();
  546. // await getPageData2();
  547. // await getPageData3();
  548. // await getPageData4();
  549. // await getPageData5();
  550. // await getPageData6();
  551. // await getPageData7();
  552. // await getPageData8();
  553. let getJson = [
  554. // { "parent": routeId + ",0,0", "child": pageData.value[0].cid + ",3,10" },//模块1理论前沿
  555. // { "parent": routeId + ",0,0", "child": pageData.value[1].cid + ",2,6" },//模块2典型经验
  556. // { "parent": routeId + ",0,0", "child": pageData.value[2].cid + ",3,10" },//模块3农业天地
  557. // { "parent": routeId + ",0,0", "child": pageData.value[3].cid + ",2,6" },//模块4美丽乡村
  558. // { "parent": routeId + ",0,0", "child": pageData.value[4].cid + ",1,10" },//模块5农民之家
  559. // { "parent": routeId + ",0,0", "child": pageData.value[5].cid + ",3,10" },//模块6农业天地
  560. // { "parent": routeId + ",0,0", "child": pageData.value[6].cid + ",3,10" },//模块7农村建设
  561. // { "parent": routeId + ",0,0", "child": pageData.value[7].cid + ",3,13" },//模块8高端资讯
  562. ]
  563. for (let i = 0; i < pageData.value.length; i++) {
  564. if (i == 0) {
  565. getJson.push({ "parent": routeId + ",0,0", "child": pageData.value[i].cid + ",3,10" });
  566. } else if (i == 1) {
  567. getJson.push({ "parent": routeId + ",0,0", "child": pageData.value[i].cid + ",2,6" });
  568. } else if (i == 2) {
  569. getJson.push({ "parent": routeId + ",0,0", "child": pageData.value[i].cid + ",3,10" });
  570. } else if (i == 3) {
  571. getJson.push({ "parent": routeId + ",0,0", "child": pageData.value[i].cid + ",2,6" });
  572. } else if (i == 4) {
  573. getJson.push({ "parent": routeId + ",0,0", "child": pageData.value[i].cid + ",1,10" });
  574. } else if (i == 5) {
  575. getJson.push({ "parent": routeId + ",0,0", "child": pageData.value[i].cid + ",3,10" });
  576. } else if (i == 6) {
  577. getJson.push({ "parent": routeId + ",0,0", "child": pageData.value[i].cid + ",3,10" });
  578. } else if (i == 7) {
  579. getJson.push({ "parent": routeId + ",0,0", "child": pageData.value[i].cid + ",3,13" });
  580. }
  581. }
  582. let jsonString = JSON.stringify(getJson);
  583. // console.log("jsonString", getJson);
  584. getPageAllData(jsonString);
  585. } else {
  586. console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
  587. console.log("错误位置:分类页导航池")
  588. console.log("后端错误反馈:", navigateData.message)
  589. console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
  590. }
  591. } catch (error) {
  592. console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
  593. console.log("错误位置:分类页导航渲染阶段")
  594. console.log("错误:导航池渲染执行接口出错!请检查首页的14的模块的具体执行方法!")
  595. console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
  596. }
  597. async function getPageAllData(jsonString) {
  598. const mkdata = await requestDataPromise('/web/getWebsiteAllArticle', {
  599. method: 'GET',
  600. query: {
  601. 'id': jsonString
  602. },
  603. });
  604. if (mkdata.code == 200) {
  605. console.log(778899)
  606. console.log(mkdata.data)
  607. //模块1理论前沿
  608. if (mkdata.data[0].child.imgnum.length > 0) {
  609. pageData.value[0].data.push(mkdata.data[0].child.imgnum[0]);
  610. }
  611. if (mkdata.data[0].child.imgnum.length > 1) {
  612. pageData.value[0].data1.push(mkdata.data[0].child.imgnum[1]);
  613. }
  614. if (mkdata.data[0].child.imgnum.length > 2) {
  615. pageData.value[0].data1.push(mkdata.data[0].child.imgnum[2]);
  616. }
  617. if (mkdata.data[0].child.textnum) {
  618. pageData.value[0].data2 = mkdata.data[0].child.textnum;
  619. }
  620. //模块2典型经验
  621. if (mkdata.data[1].child.imgnum) {
  622. pageData.value[1].data = mkdata.data[1].child.imgnum;
  623. }
  624. if (mkdata.data[1].child.textnum) {
  625. pageData.value[1].data1 = mkdata.data[1].child.textnum;
  626. }
  627. //模块3农业天地
  628. if (mkdata.data[2].child.imgnum.length > 0) {
  629. pageData.value[2].data.push(mkdata.data[2].child.imgnum[0]);
  630. }
  631. if (mkdata.data[2].child.imgnum.length > 1) {
  632. pageData.value[2].data1.push(mkdata.data[2].child.imgnum[1]);
  633. }
  634. if (mkdata.data[2].child.imgnum.length > 2) {
  635. pageData.value[2].data1.push(mkdata.data[2].child.imgnum[2]);
  636. }
  637. pageData.value[2].data2 = mkdata.data[2].child.textnum;
  638. //模块4美丽乡村
  639. pageData.value[3].data = mkdata.data[3].child.imgnum;
  640. pageData.value[3].data2 = mkdata.data[3].child.textnum;
  641. //模块5农民之家
  642. pageData.value[4].data = mkdata.data[4].child.imgnum;
  643. for (let i in mkdata.data[4].child.textnum) {
  644. if (i < 5) {
  645. pageData.value[4].data1.push(mkdata.data[4].child.textnum[i]);
  646. } else {
  647. pageData.value[4].data2.push(mkdata.data[4].child.textnum[i]);
  648. }
  649. }
  650. //模块6农业天地
  651. if (mkdata.data[5].child.imgnum.length > 0) {
  652. pageData.value[5].data.push(mkdata.data[5].child.imgnum[0]);
  653. }
  654. if (mkdata.data[5].child.imgnum.length > 1) {
  655. pageData.value[5].data1.push(mkdata.data[5].child.imgnum[1]);
  656. }
  657. if (mkdata.data[5].child.imgnum.length > 2) {
  658. pageData.value[5].data1.push(mkdata.data[5].child.imgnum[2]);
  659. }
  660. pageData.value[5].data2 = mkdata.data[5].child.textnum;
  661. //模块7农村建设
  662. if (mkdata.data[6].child.imgnum.length > 0) {
  663. pageData.value[6].data.push(mkdata.data[6].child.imgnum[0]);
  664. }
  665. if (mkdata.data[6].child.imgnum.length > 1) {
  666. pageData.value[6].data1.push(mkdata.data[6].child.imgnum[1]);
  667. }
  668. if (mkdata.data[6].child.imgnum.length > 2) {
  669. pageData.value[6].data1.push(mkdata.data[6].child.imgnum[2]);
  670. }
  671. pageData.value[6].data2 = mkdata.data[6].child.textnum;
  672. //模块8高端资讯
  673. pageData.value[7].data = mkdata.data[7].child.imgnum;
  674. // console.log('1111111',mkdata.data[4].child.textnum);
  675. for (let i in mkdata.data[7].child.textnum) {
  676. if (i < 7) {
  677. pageData.value[7].data1.push(mkdata.data[7].child.textnum[i]);
  678. } else if (i < 9) {
  679. pageData.value[7].data2.push(mkdata.data[7].child.textnum[i]);
  680. } else if (i < 11) {
  681. pageData.value[7].data3.push(mkdata.data[7].child.textnum[i]);
  682. } else {
  683. pageData.value[7].data4.push(mkdata.data[7].child.textnum[i]);
  684. }
  685. }
  686. } else {
  687. ElMessage.error(mkdata.message)
  688. }
  689. }
  690. //3.渲染页面数据 end ---------------------------------------->
  691. //4.设置seo信息 start---------------------------------------->
  692. //4.1 设置seo信息
  693. const setData = await requestDataPromise('/web/getWebsiteCategoryHead', {
  694. method: 'GET',
  695. query: {
  696. 'catid': routeId
  697. },
  698. });
  699. if (setData.code == 200) {
  700. let seoTitle = setData.data.seo_title;
  701. let seoDescription = setData.data.seo_description;
  702. let seoKeywords = setData.data.seo_keywords;
  703. let seoSuffix = setData.data.suffix;
  704. let seoName = setData.data.website_name;
  705. useSeoMeta({
  706. title: seoTitle + "_" + seoSuffix,
  707. meta: [
  708. { name: 'description', content: seoDescription + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },
  709. { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix, tagPriority: 10 }
  710. ]
  711. });
  712. } else {
  713. console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
  714. console.log("错误位置:设置分类页面SEO数据")
  715. console.log("后端错误反馈:", setData.message)
  716. console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
  717. }
  718. //4.设置seo信息 end---------------------------------------->
  719. //5. 获取日期中单独的年 月 日 start--------------------------->
  720. function getTime(date, part, digits) {
  721. const d = new Date(date);
  722. if (part === 'year') {
  723. let year = d.getFullYear();
  724. if (digits === 2) {
  725. return String(year).slice(-2);
  726. }
  727. return year;
  728. } else if (part === 'month') {
  729. let month = d.getMonth() + 1;
  730. if (digits === 2) {
  731. return String(month).padStart(2, '0');
  732. }
  733. if (month < 10) {
  734. month = '0' + month;
  735. } else {
  736. month = month;
  737. }
  738. return month;
  739. } else if (part === 'day') {
  740. let day = d.getDate();
  741. if (digits === 2) {
  742. return String(day).padStart(2, '0');
  743. }
  744. return day;
  745. }
  746. return null;
  747. }
  748. //5. 获取日期中单独的年 月 日 end------------------------------>
  749. </script>
  750. <style lang="less" scoped>
  751. @import '@/assets/css/class.less';
  752. </style>